var intersect = function (nums1, nums2) {
  let map = new Map();
  let result = [];

  for (const num1 of nums1) {
    const value = map.get(num1);
    if (value) {
      map.set(num1, value + 1);
    } else {
      map.set(num1, 1);
    }
  }

  for (const num2 of nums2) {
    const value = map.get(num2);
    if (value) {
      result.push(num2);
      map.set(num2, value - 1);
    }
  }

  return result;
};
